public class demo {
    public static void main(String[] args) throws InterruptedException {
        Object locker1 = new Object();
        Object locker2 = new Object();

        Thread t1 = new Thread(()->{
           synchronized (locker1)
           {
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
               synchronized (locker2)
               {
                   System.out.println(Thread.currentThread().getName()+"获取了两把锁");
               }
           }

        },"t1");
        Thread t2 = new Thread(()->{
           synchronized (locker2)
           {
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
               synchronized (locker1)
               {
                   System.out.println(Thread.currentThread().getName()+"获取了两把锁");
               }
           }

        },"t2");

        t1.start();
        t2.start();

        t1.join();
        t2.join();
    }
}
